package com.xiaoma.suanfa;

/**
 * @author xiaomacdut
 * @date 2020年3月10日 上午11:00:20
 */
public class Zixulie{
    
    public static void main(String [] args){
        int [] arr = {3, 0, -1, -2, -3, 1, 1, 1, 2, 3, 1, -2, -1};
        int [] arr1 = new int[arr.length + 1];
        // 创建求和串，为了考虑整个串和为0，将首项设置为0；
        arr1[0] = 0;
        for(int x = 0; x < arr.length; x++){
            arr1[x + 1] = arr[x] + arr1[x];
        }
        
        int arr2[] = new int[arr.length];
        // 寻找两个相同数字最大距离，从后向前，找到就ok
        for(int i = 0; i < arr.length; i++){
            // arr2[i] = 0;
            // 剩下的如果没有已找到的长，就不找了
            
            /*      if(i != 0 && arr2[i - 1] > arr.length - i){
                break;
            }*/
            
            for(int j = arr.length; j >= 0; j--){
                if(arr1[i] == arr1[j]){
                    arr2[i] = j - i;
                    break;
                }
            }
        }
        
        // 找最大值
        int max = 0;
        for(int x = 0; x < arr2.length; x++){
            if(arr2[x] > max){
                max = arr2[x];
            }
        }
        System.out.println(max);
        // return max;
    }
    
    
}
